package ar.uba.fi.taller2.cmmiassistant.frontend.util;

import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.event.ListDataListener;

import ar.uba.fi.taller2.cmmiassistant.controlador.Controlador;
import ar.uba.fi.taller2.cmmiassistant.frontend.evaluacion.util.AreaProcesoConversorEvaluables;
import ar.uba.fi.taller2.cmmiassistant.frontend.evaluacion.util.ConversorEvaluables;
import ar.uba.fi.taller2.cmmiassistant.modelo.cmmi.AreaProceso;
import ar.uba.fi.taller2.cmmiassistant.modelo.evaluacion.Escalonada;
import ar.uba.fi.taller2.cmmiassistant.modelo.evaluacion.Representacion;
import ar.uba.fi.taller2.cmmiassistant.modelo.resultados.NivelCumplimientoObjetivo;
import ar.uba.fi.taller2.cmmiassistant.modelo.resultados.NivelCumplimientoPractica;

import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;

public class ItemToEvaluateAreaProcesoEditor extends JPanel{


	/**
	 * 
	 */
	private static final long serialVersionUID = -6158926772993272280L;
	
	private JLabel lblItemToEvaluate;

	private JComboBox satisfaccion;
	private DefaultComboBoxModel model = new DefaultComboBoxModel();
	
	private AreaProcesoConversorEvaluables conversorEvaluable = null;
	private AreaProceso ent = null;
	
	
	private Controlador controlador = null;
	
	private void initialize(){
		setLayout(new FormLayout(
				new ColumnSpec[] {
					FormFactory.RELATED_GAP_COLSPEC,
					new ColumnSpec("right:default:grow(1.0)"),
					FormFactory.RELATED_GAP_COLSPEC,
					FormFactory.DEFAULT_COLSPEC,
					FormFactory.RELATED_GAP_COLSPEC},
				new RowSpec[] {
					FormFactory.RELATED_GAP_ROWSPEC,
					FormFactory.DEFAULT_ROWSPEC,
					FormFactory.RELATED_GAP_ROWSPEC}));

		
			initModel();


					
	}
	
	private void initModel() {
		Component componentToAdd = null;
		if (controlador!= null && controlador.getModelo().getEvaluacionSeleccionada().getValor()!=null &&
				controlador.getModelo().getEvaluacionSeleccionada().getValor().getRepresentacion()!=null){
			Representacion representacion = controlador.getModelo().getEvaluacionSeleccionada().getValor().getRepresentacion();
			for (Integer valores : representacion.getValoresPosiblesCalificacion()) {
				model.addElement(valores);
			}
			
				satisfaccion = new JComboBox();
				satisfaccion.addActionListener(listenerEvaluarItem);
				satisfaccion.setModel(model);
				if (conversorEvaluable.getCalificacion(ent)!=null)
					satisfaccion.setSelectedItem(conversorEvaluable.getCalificacion(ent));
				componentToAdd = satisfaccion;
			add(componentToAdd, new CellConstraints(4, 2));
			lblItemToEvaluate = new JLabel(conversorEvaluable.getNombreCalificacion(ent));
			add(lblItemToEvaluate, new CellConstraints(2, 2));
		}
	}

	public ItemToEvaluateAreaProcesoEditor(AreaProceso ent, ConversorEvaluables conversor, Controlador controlador){
		super();
		this.conversorEvaluable = (AreaProcesoConversorEvaluables) conversor;
		this.ent = ent;
		this.controlador = controlador;
		initialize();
	
	}

	private ActionListener listenerEvaluarItem = new ActionListener(){
		public void actionPerformed(ActionEvent arg0) {
			
			getConversorEvaluable().notificarCambioCalificacion(ent, satisfaccion.getSelectedItem());			
		};
	};

	public ConversorEvaluables getConversorEvaluable() {
		return conversorEvaluable;
	}

	public Dimension getMaximumSize() {
	    Dimension size = getPreferredSize();
	    size.width = Short.MAX_VALUE;
	    return size;
	}
}
